<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>面试题</title>
</head>

<body>
  <h2>面试题</h2>
  <script>
    // ------------- 原函数 -------------
    // function sum(a, b, c, d, e) {
    //   return a + b + c + d + e
    // }


    // ------------- 需求 -------------
    // 改写函数sum实现:参数传递到5个即可实现累加
    // sum(1)(2)(3)(4)(5)
    // sum(1)(2,3)(4)(5)
    // sum(1)(2,3,4)(5)
    // sum(1)(2,3)(4,5)

    // 1. 保存不定长参数
    let nums = []
    function sum(...args) {
      nums.push(...args)
      // 2. 判断参数的个数
      if (nums.length >= 5) {
        // 2.1 长度到5 累加
        const res = nums.slice(0, 5).reduce((p, v) => p + v, 0)
        // 注意:累加之后需要清空数组,保证下次累加的值是正确的
        nums = []
        return res

      } else {
        // 2.2 长度没到5 返回函数接收剩余参数
        return sum
      }
    }



  </script>
</body>

</html>